IT鐵人
上一次我們提到了Set Associate Cache,意思是在entry中加入多個Block,以避免常常存取的Block要求進入同一個entry導致miss rate居高不下。
所以我們可以在外面加上第二層Cache,不論是晶片內外都可以,實作的方式也很多,就不特別說明了。
因為多了第二層,hit time不可能比第一層高,所以第二層以後注重的是減少miss rate,降低hit time就留給第一層注重。
在計算Miss Rate之前,需要先介紹兩個詞:
底下提供了一個例子,假設發生了1000次的access,其中L1發生了50次miss,而這50次又在L2發生了20次miss,後面又在L3發生了5次miss,所以總的來說,這樣子的三層Cache miss rate為0.5%。
CPU | L1 Cache | L2 Cache | L3 Cache | |
---|---|---|---|---|
1000 access | 50 miss | 20 miss | 5 miss | |
GMR | 50/1000 | 20/1000 | 5/1000 | |
LMR | 50/1000 | 20/50 | 5/20 |
L1 GMR = L1 LMR
L2 GMR = L1 LMR x L2 LMR
L3 GMR = L1 LMR x L2 LMR x L3 LMR
剛剛都是用miss rate說明,這次用實際一點的時間計算來示範:
假設處理器CPI=1.0,clock rate=4GHz,Memory access time=100ns,並且保證所有access都能在Memory hit。第一層Cache miss rate=2%。
如果加上了第二層Cache,其access time=5ns,GMR=0.5%,那麼整個處理器速度會提昇多少?
在這類型的題目要把單位都換成一樣的,換成時間會是cycle數量,以下用cycle換算:
clock rate:4GHz -> clock time:0.25ns
Memory access time=400 cycles
secondary cache access time=20 cycles
因為最快速的第一層access時間很短,可以直接省略。
未加上第二層時,Cycle數 = 1(CPI) + 2% x 400(Memory stall) = 9
加上第二層後,Cycle數 = 1(CPI) + (2%-0.5%) x 20(L2 Cache stall) + 0.5% x (20+400)(Memory stall) = 3.4
所以performance提昇 9/3.4 = 2.6左右
要特別注意的是L2miss後進入Memory,不能只有考慮Memory stall,還要考慮剛剛L2miss的時間,所以才有20+400的數字。
這三回講的是Cache System,分成了Direct Mapped, Set Associate還有Multilevel三種,下一回開始會講Virtual Memory,會比Cache System複雜一些些。
上一篇 | 下一篇 |
---|---|
Set Associative Cache | Miku Memory |